package cn.com.dcsgo.service;

import cn.com.dcsgo.domain.dto.SysDeptSaveDTO;
import cn.com.dcsgo.domain.dto.SysDeptUpdateDTO;
import cn.com.dcsgo.domain.po.SysDept;
import cn.com.dcsgo.domain.vo.SysDeptVO;

import java.util.List;

/**
 * SysDeptService
 *
 * @author Dcsgo
 * @since 2/6/2025 下午 8:02
 */

public interface SysDeptService extends SysBaseService<SysDept> {
    /**
     * 获取所有部门信息
     *
     * @return 返回的部门信息具有层级关系
     */
    List<SysDeptVO> getLevelList();

    /**
     * 根据部门编号获取部门信息
     *
     * @param deptId 部门编号
     * @return 部门信息
     */
    SysDept getOne(Long deptId);

    /**
     * 添加部门信息
     *
     * @param saveDTO 部门信息(数据表中的冗余信息通过查表填充)
     * @return 受影响行数
     */
    int save(SysDeptSaveDTO saveDTO);

    /**
     * 更新部门信息
     *
     * @param updateDTO 部门信息(数据表中的冗余信息通过查表填充)
     * @return 受影响行数
     */
    int update(SysDeptUpdateDTO updateDTO);

    /**
     * 删除部门，有下级部门的部门不允许删除
     *
     * @param deptId 部门编号
     * @return 受影响行数
     */
    int remove(Long deptId);
}
